package algorithm_learn.sort;

public class Code_selectSort {
    public static void main(String[] args) {
        int[] arr = {5,1,5,1,3,4,1,4,1,2,4,1};
        printArr(arr);
        selectSort(arr);
        //排序后
        printArr(arr);
    }
    public static void printArr(int[] arr){
        for (int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println("");
    }
    //选择排序
    public static void selectSort(int[] arr){
        //先处理边际条件
        if(arr == null || arr.length==0){
            return ;
        }
        //0 - n-1 选一个最小值
        //1 - n-1
        //2 - n-1
        int N = arr.length;
        for (int i=0;i<N;i++){
            //0 - n-1 选一个最小值
            //1 - n-1
            //2 - n-1
            //i - n-1
            int minValueIndex = i;//最小值一开始假设在i位置
            for (int j=i+1;j<N;j++){
                minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
            }
            //交换
            swap(arr,i,minValueIndex);
        }

    }
    public static void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

}
